import allure
import json
import jsonpath
import requests
# 工具层
class ApiKey:
    # 将get请求行为进行封装
    @allure.step("发送get请求")  # 引用allure.step()装饰器进行步骤详细描述
    def get(self, url, data=None, **kwargs):
        return requests.get(url, data=data, **kwargs)

    # 将post请求行为进行封装
    @allure.step("发送post请求")
    def post(self, url, data=None, **kwargs):
        return requests.post(url, data=data, **kwargs)

    # 将delete请求行为进行封装
    @allure.step("发送delete请求")
    def delete(self, url, **kwargs):
        return requests.delete(url, **kwargs)

    # 由于接口之间可能相互关联，因此下一个接口需要上一个接口的某个返回值，
    @allure.step("获取返回结果字典值")
    def get_text(self, data, key):
        # json字符串转换为字典
        json_data = json.loads(data)
        # # jsonpath取值  使用jsonpath对接口的返回值进行取值
        value = jsonpath.jsonpath(json_data, f"$..{key}")[0]
        return value
